home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / endo / endo.h < prev    next >
C/C++ Source or Header  |  1995-05-12  |  6KB  |  183 lines

  1. /*************************************************************************
  2.  *                                                                       *
  3.  *  Copyright (c) 1992, 1993 Ronald Joe Record                           *
  4.  *                                                                       *
  5.  *  All rights reserved. No part of this program or publication may be   *
  6.  *  reproduced, transmitted, transcribed, stored in a retrieval system,  *
  7.  *  or translated into any language or computer language, in any form or *
  8.  *  by any means, electronic, mechanical, magnetic, optical, chemical,   *
  9.  *  biological, or otherwise, without the prior written permission of:   *
  10.  *                                                                       *
  11.  *      Ronald Joe Record (408) 458-3718                                 *
  12.  *      212 Owen St., Santa Cruz, California 95062 USA                   *
  13.  *                                                                       *
  14.  *************************************************************************/
  15.  
  16. /*
  17.  *    @(#) endo.h 11.1 93/11/16 SCOINC
  18.  */
  19. /*
  20.  *    Written by Ron Record (rr@sco.com) 17 Jan 1992.
  21.  */
  22. #ifndef ENDO_H
  23. #include <assert.h>
  24. #ifndef NeXT
  25. #include <values.h>
  26. #endif
  27. #include <math.h>
  28. #include <memory.h>
  29. #include <stdio.h>
  30. #include "x.h"
  31.  
  32. #ifndef LN_MINDOUBLE
  33. #define LN_MINDOUBLE (M_LN2 * (DMINEXP - 1))
  34. #endif
  35. #ifndef LN_MAXDOUBLE
  36. #define LN_MAXDOUBLE (M_LN2 * DMAXEXP)
  37. #endif
  38.  
  39. int        screen;
  40. Display*    dpy;
  41.  
  42. Window stacktop, which, canvas, trajec, crijec, info, help, lyajec, prejec;
  43. Window hisbar, colwin;
  44.  
  45. pair gaertner(), goodwin(), gucken(), circle(), hump(), circle2(), standard();
  46. #ifdef NorthSouth
  47. pair north(); 
  48. #endif
  49. #ifdef Gardini
  50. pair gard(), gard2(), gard3();
  51. #endif
  52. #ifdef Plendo
  53. pair q1(), q2(), q3(), c1();
  54. #endif
  55. pair rotor(), twistandflip(), dorband(), logistic(), alexander(), lorenz();
  56. pair mira(), peitgen(), julia(), brussel(), secant(), golub(), marty(), baru();
  57. pair A0, A1, B0, B1;
  58. pair dgaertner(), dgoodwin(), dgucken(), dcircle(), dhump(), dcircle2(); 
  59. #ifdef NorthSouth
  60. pair dnorth();
  61. #endif
  62. #ifdef Gardini
  63. pair dgard(), dgard2(), dgard3();
  64. #endif
  65. #ifdef Plendo
  66. pair dq1(), dq2(), dq3(), dc1();
  67. #endif
  68. pair dstandard(), drotor(), dtwistandflip(), dbaru();
  69. pair ddorband(), dlogistic(), dlorenz(), dmira(), dpeitgen(), djulia();
  70. pair dnumeric(), dbrussel(), dsecant(), dgolub(), dmarty(), dalexander();
  71. PFP map; 
  72. PFP deriv;
  73. PFP Maps[NUMMAPS]={ gaertner, goodwin, gucken, circle, hump, circle2, standard,
  74. #ifdef NorthSouth
  75. #ifdef Gardini
  76.     north, gard, gard2, gard3,
  77. #else
  78.     north,
  79. #endif
  80. #else
  81. #ifdef Gardini
  82.     gard, gard2, gard3,
  83. #endif
  84. #endif
  85.     rotor, twistandflip, dorband, logistic, lorenz,
  86.     mira, peitgen, julia, brussel, secant, alexander, golub, marty, baru
  87. #ifdef Plendo
  88.     , q1, q2, q3, c1 
  89. #endif
  90. };
  91. PFP Derivs[NUMMAPS]={ dgaertner, dgoodwin, dgucken, dcircle, dhump, dcircle2, 
  92.     dstandard, 
  93. #ifdef NorthSouth
  94. #ifdef Gardini
  95.     dnorth, dgard, dgard2, dgard3,
  96. #else
  97.     dnorth,
  98. #endif
  99. #else
  100. #ifdef Gardini
  101.     dgard, dgard2, dgard3,
  102. #endif
  103. #endif
  104.     drotor, dtwistandflip, ddorband, dlogistic, dlorenz, dmira, dpeitgen, 
  105.     djulia, dbrussel, dsecant, dalexander, dgolub, dmarty, dbaru
  106. #ifdef Plendo
  107.     , dq1, dq2, dq3, dc1 
  108. #endif
  109. };
  110. char *Mapnames[NUMMAPS]={ "Gaertner", "Goodwin", "Leslie Matrix", "Circle",
  111.         "Hump", "Circle2", "Standard", 
  112. #ifdef NorthSouth
  113.         "Chichilnisky North-South", 
  114. #endif
  115. #ifdef Gardini
  116.         "Gardini figure 8", "Gardini figure 18", "Gardini figure 20",
  117. #endif
  118.         "Rotor", "Twist and Flip", "Dorband Double Logistic", "Double Logistic",
  119.         "Lorenz", "Mira 1973", "Volterra-Lotka", "Julia-Mandelbrot",
  120.         "Brusselator", "Secant Method", "Alexander", 
  121.         "Field and Golubitsky Quilts","Field and Golubitsky Icons","Barugola" 
  122. #ifdef Plendo
  123.     , "Mira Quad (Q1)", "Mira Agg (Q2)", "Mira-Narayaninsamy (Q3)", 
  124.     "Kawakami-Kawasaki (C1)" 
  125. #endif
  126.         };
  127.  
  128. int color_offset = 96;
  129. int width=490, height=390;
  130. int settle=256, dwell=256;
  131. int criwidth=490, criheight=390;
  132. int trawidth=512, traheight=512;
  133.  
  134. double    min_x=0.0, min_y=0.0, x_range=1.0, y_range=1.0;
  135. double  max_x=1.0, max_y=1.0;
  136. double  x_inc, y_inc, x, y, c_min_x, c_min_y, c_x_range, c_y_range;
  137. double  t_min_x, t_min_y, t_x_range, t_y_range;
  138. int        run=1, negative=0, numcolors=16;
  139. int        numfreecols, displayplanes;
  140. xy_t    point;
  141. points_t Points, Orbits, Basins, Histog;
  142. Pixmap  pixmap, pixtra, pixcri, pixpre;
  143. Colormap cmap;
  144. XColor    Colors[MAXCOLOR];
  145. int        *basins[MAXFRAMES];
  146. int        *periods[MAXFRAMES];
  147. int        *indices[MAXFRAMES];
  148. double    *coords[MAXFRAMES][2];
  149. double    *crit_pts[2];
  150. double    *crit_arc[2];
  151. double    *n_crit_pts[2];
  152. double    *n_crit_arc[2];
  153. double  a_minimums[MAXFRAMES], b_minimums[MAXFRAMES];
  154. double  a_maximums[MAXFRAMES], b_maximums[MAXFRAMES];
  155. int        minperiod, maxperiod, p1=0, p2=1, precrit=0, calclyap=0;
  156. int        perind[MAXFRAMES]={0}, resized[MAXFRAMES]={0}; 
  157. int        numwheels=MAXWHEELS, portrait=1, attractors=0, find=0, critical=0; 
  158. int        maxradius=100, nostart=1, numcrits=0, numarcs=0, randinit=0, lyap=2;
  159. int        save=1, show=0, spinlength=512, savefile=0, clearflag=0, therm_index=0;
  160. int        maxframe=0, frame=0, mapindex=-1, orbit=0, histogram=0, thermometer=1;
  161. int        found_arc=0, orbits_3d=0, row=1, numrows=1, showbar=0, adjcol=0;
  162. int        STARTCOLOR=17, MINCOLINDEX=33, Xflag=0, Yflag=0;
  163. char    *outname="endo.out";
  164. double  thermval, therm_max, therm_min;
  165. double  params[MAXPARAMS];
  166. double cdelt=0.05, delta=1.0e-3, start_x=0.3, start_y=0.7, maxexp=0, minexp=0;
  167. unsigned long background, foreground;
  168.  
  169. GC Data_GC[MAXCOLOR], RubberGC, Reverse_GC, BlackOnWhiteGC;
  170.  
  171. void    resize();
  172. void    redisplay();
  173. void    Spin();
  174. void    show_defaults();
  175. void    StartRubberBand();
  176. void    TrackRubberBand();
  177. void    EndRubberBand();
  178. void    CreateXorGC();
  179. void    AllInitBuffer();
  180. void    AllFlushBuffer();
  181. #define ENDO_H
  182. #endif
  183.